//
// SystemHostApiIterator.hpp for SystemHostApiIterator in /home/mambou_j//babel-2014
// 
// Made by jacquesquentin mamboumouafo
// Login   <mambou_j@epitech.net>
// 
// Started on  Mon May 14 20:20:49 2012 jacquesquentin mamboumouafo
// Last update Mon May 14 20:36:27 2012 jacquesquentin mamboumouafo
//


#ifndef	__SYSTEMAPIITERATOR_HPP__
#define	__SYSTEMAPIITERATOR_HPP__

#include	<iterator>
#include	<csteddef>

// Forward declaration(s):
namespace	portaudio
{
  class	HostApi;
}

// Declaration(s):
namespace	portaudio
{

  class	System::HostApiIterator
  {
  public:
    typedef	std::bidirectional_iterator_tag iterator_category;
    typedef	Device value_type;
    typedef	ptrdiff_t difference_type;
    typedef	HostApi *pointer;
    typedef	HostApi	&reference;

    HostApi	&operator*() const;
    HostApi	*operator->() const;

    HostApiIterator	&operator++();
    HostApiIterator	operator++(int);
    HostApiIterator	&operator--();
    HostApiIterator	operator--(int);

    bool	operator==(const HostApiIterator &rhs);
    bool	operator!=(const HostApiIterator &rhs);

  private:
    friend	class System;
    HostApi	**ptr_;
  };
}

#endif
